

package main.new_2024.month_06;


/**
 * @Description: todo 522. 最长特殊序列 II
 * 给定字符串列表 strs ，返回其中 最长的特殊序列 的长度。如果最长特殊序列不存在，返回 -1 。
 * 特殊序列 定义如下：该序列为某字符串 独有的子序列（即不能是其他字符串的子序列）。
 *  s 的 子序列可以通过删去字符串 s 中的某些字符实现。
 * 例如，"abc" 是 "aebdc" 的子序列，因为您可以删除"aebdc"中的下划线字符来得到 "abc" 。"aebdc"的子序列还包括"aebdc"、 "aeb" 和 "" (空字符串)。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2024/2/27
 * @Param:
 * @return:
 **/
public class Solution0617 {

    //最长特殊序列:双循环判断两个数组是否子序列，双指针判断是否子序列
    public int findLUSlength(String[] strs) {
        int length = strs.length;
        int result = -1;
        for (int i = 0; i < length; i++) {
            boolean flag = true;
            for (int j = 0; j<length ;j++){
                if (i != j && checkSame(strs[i],strs[j])){
                    flag = false;
                    break;
                }
            }
            if (flag){
                result = Math.max(strs[i].length(),result);
            }
        }
        return result;
    }

    private boolean checkSame(String a,String b) {
        int i = 0;
        int j = 0;
        char[] charsA = a.toCharArray();
        char[] charsB = b.toCharArray();
        while (i < a.length() && j < b.length()){
            if (charsA[i] == charsB[j]){
                i++;
                j++;
            }else {
                j++;
            }
        }
        return i == charsA.length;
    }



}

